package opf5.entities.repositorios;

import java.util.List;

import opf5.entities.dominio.Jugador;
import opf5.entities.dominio.Propuesta;
import opf5.entities.propuestas.RepositorioPropuestasEnMemoria;
import opf5.persistencia.OPF5DBGateway;
import opf5.persistencia.proxies.PropuestaDBProxy;

public class RepositorioPropuestasPersistente implements RepositorioPropuestas {
	private static RepositorioPropuestasEnMemoria repositorio = new RepositorioPropuestasEnMemoria();

	public RepositorioPropuestasPersistente() {
		List<PropuestaDBProxy> propuestas = OPF5DBGateway.getPropuestas();
		
		for (PropuestaDBProxy p : propuestas) {
			if (p.getEstadoPropuesta().equals("En Espera"))
				repositorio.agregarPropuesta(p);
			else if (p.getEstadoPropuesta().equals("Aprobada"))
				repositorio.agregarPropuestaAprobada(p);
			else if (p.getEstadoPropuesta().equals("Rechazada"))
				repositorio.agregarPropuestaRechazada(p);
		}
	}
	
	
	@Override
	public List<Propuesta> getPropuestasEnEspera() {
		return this.repositorio.getPropuestasEnEspera();
	}

	@Override
	public void agregarPropuesta(Propuesta propuesta) {
		this.repositorio.agregarPropuesta(propuesta);
		OPF5DBGateway.crearPropuesta((PropuestaDBProxy) propuesta); 
	}

	@Override
	public List<Propuesta> getPropuestasRechazadas() {
		return this.repositorio.getPropuestasRechazadas();
	}

	@Override
	public void rechazarPropuesta(Propuesta propuesta, String motivo) {
		this.repositorio.rechazarPropuesta(propuesta, motivo);
		OPF5DBGateway.rechazarPropuesta((PropuestaDBProxy) propuesta);
	}

	@Override
	public List<Propuesta> getPropuestasAprobadas() {
		return this.repositorio.getPropuestasAprobadas();
	}

	@Override
	public void aprobarPropuesta(Propuesta propuesta, Jugador nuevoJugador, RepositorioJugadores repositorioJugadores) {
		this.repositorio.aprobarPropuesta(propuesta, nuevoJugador, repositorioJugadores);
		OPF5DBGateway.aprobarPropuesta((PropuestaDBProxy) propuesta);
	}
}
